var site_path = '/forthcoming';

$(document).ready(function() {
    $('#fields :checkbox').change(function() {
    if ($('#fields :checked').length == 0) {
        alert('Нужно оставить хотя бы одно поле для поиска');
        $(this).attr('checked', 'on');
    }
});
});

function add_release(form_id) {
    var responses = new Array();
    responses['INVALID_DATE'] = 'Неправильно указана дата. Дата должна быть в формате ГГГГ-ММ-ДД';
    // Выполняем проверку на наличие хотя бы одного заполненного поля артистов. В случае, если ни
    // один артист не указан, показываем сообщение об ошибке
    if ($('#artist_list :input[value]').length == 0) {
        alert ('В списке должен содержаться хотя бы один артист');
        return false;
    }
    // Отключаем кнопку "добавить релиз" чтобы предотвратить случайные повторы
    $('#add_release_button').attr('disabled', 'disabled');
    
    // Удаляем неиспользуемые поля исполнителей, cериализируем форму и заносим результат сериализации в переменную
    var release_data = $("#add_release_form :not(#artist_list :input[value=''])").serialize();
    // Выполняем AJAX-запрос на сервер
    $.post(site_path + '/release/ajax_add', release_data, function(data) {
        alert(data);
        alert(responses[data]);
       $('#add_release_form').fadeOut('normal');
       $('#message').show('normal');
       $('#message_text').html('<h3>Релиз был успешно добавлен.</h3><p><a href="#" onclick="show_form()">Добавить ещё один релиз</a> || <a href="/forthcoming/">На главную</a></p>').show();
     });
};

function ajax_delete_release(release_id) {
    $.post(site_path + '/release/ajax_delete', {
        id: release_id
    }, function(data){
        if(data == 'true') {
            $('#release_'  + release_id).hide();
            $('#info_row_'  + release_id).hide();
        } else {
            alert('Произошла ошибка при удалении релиза.');
        }
    });
};


function show_form() {
    $('#message').hide('fast');
    $('#add_release_button').removeAttr('disabled');
    $('#add_release_form')[0].reset();
    delete_artist('._del_artist', false);
    add_artist_field();
    $('#add_release_form').show('slow');
};

function add_artist_field(artist) {
    artist = typeof(artist) != 'undefined' ? artist : '';
    $('#artist_list').append('<input type="text" name="artists[]" id="artist_field" class="artist_field" value="' + artist + '" style="margin-top: 3px; width: 93%;" /> <span class="fake_link _del_artist" onclick="delete_artist(this)">[-]</span>');
};

function delete_artist(object, check_empty) {
    check_empty = typeof(check_empty) != 'undefined' ? true : check_empty;
    
    if (! (check_empty) && (($('#artist_list :input').length -1) == 0)) {
        alert ('Ошибка\nДолжен присутствовать хотя бы один артист');
        return false;
    }
    
    $(object).prev(':input').andSelf().fadeOut('fast', function() {
        $(object).prev(':input').andSelf().remove();
    });
}

function ajax_edit_release(release_id, form_name) {
    // Выполняем проверку на наличие хотя бы одного заполненного поля артистов. В случае, если ни
    // один артист не указан, показываем сообщение об ошибке
    if ($('#artist_list :input[value]').length == 0) {
        alert ('В списке должен содержаться хотя бы один артист');
        return false;
    }
    // Отключаем кнопку "добавить релиз" чтобы предотвратить случайные повторы
    $('#edit_release_button').attr('disabled', 'disabled');
    // Удаляем неиспользуемые поля исполнителей, cериализируем форму и заносим результат сериализации в переменную
    var release_data = $('#' + form_name + ' :not(#artist_list :input[value=""])').serialize();
 
    $.ajax({
        type: 'POST',
        url: site_path +'/release/ajax_edit/',
        data: 'release_id=' + release_id + '&' + release_data,
        beforeSend: function(){

        },
        success: function(data) {
            $('#edit_release_form').hide('fast');
            $('#message').show('slow');
            $('#message_text').html('').show();
        }
    });

    
    
};


function set_status(release_id, release_status) {
    $.post(site_path + '/release/ajax_set_status', {
        id: release_id,
        status: release_status
    }, function(data) {
        $('#release_status_' + release_id).html('Сказано &mdash; сделано. Статус успешно установен.')
    });
};



function show_release(release_id) {
    // Ну вот какого такого хера IE не может поддерживать простейший Trim и я должен из-за этого юзать
    // джикверевый вариант. Суки.
    var information_length = $.trim($('#info_row_' + release_id + ' td').html()).length;
    if (information_length != 0) {
        $('#info_row_' + release_id).toggle();
        return true;
    }
    $.ajax({
        type: 'POST',
        url: site_path + '/release/ajax_info/',
        data: 'id=' + release_id,
        beforeSend: function(){
            $('#info_row_' + release_id).toggle();
            $('#additional_' + release_id).html('<h3 class="center">Идёт загрузка данных. Пожалуйста, подождите.</h3>');
        },
        success: function(data) {
            $('#additional_' + release_id).html(data);
        }
    });
    return true;
};

function vote(release_id, action) {
    var current_vote = $('#r' + release_id).text();
    
    $.ajax({
        type: 'POST',
        url: site_path + '/release/ajax_vote/',
        data: 'id=' + release_id + '&action=' + action,
        beforeSend: function() {
            $('#r' + release_id).animate({opacity: 0.1}, 150);
        },
        success: function(data) {
            $('#r' + release_id).animate({opacity: 1.0}, 150);
            if (data == 'true') {
                if (action == 'p') {
                    var upd = 1;
                } else {
                    var upd = -1;
                }
                $('#r' + release_id).text(parseInt(parseInt(current_vote) + upd));
            } else {
                alert ('Не удалось изменить рейтинг. Произошла внутренняя ошибка.')
            }
        }
    });
};


function search() {
    var search_mode = get_search_mode();
    var search_query = $('#search_query').val();
    
    set_search_mode('simple');
    
    if (search_mode == 'simple') {
        $('#fields :checkbox').attr('checked', 'on');
        $('#limit option:eq(0)').attr('selected', 'selected');
    }
    
    if (search_mode == 'advanced' && $('#fields :checked').length == 0) {
        set_search_mode('advanced');
        return false;
    }
    
    if (search_query.length == 0) {
        $('#search_result').html('<div class="center"><h3>Вы не ввели текст запроса</h3><h4>Введите текст запроса и нажмите кнопку поиска.</h4></div>');
        return false;
    }
    if (search_query.length < 3) {
        $('#search_result').html('<div class="center"><h3>Слишком короткий запрос</h3><h4>Попробуйте использовать более полный запрос.</h4></div>');
        return false;
    }
    $.ajax({
        type: 'POST',
        url: site_path + '/search/ajax_show_result/',
        data: $('#search__form').serialize(),
        beforeSend: function(){
            $('#search_result').html('<span class="center">Идёт поиск. Пожалуйста подождите...</span>');
        },
        success: function(data) {
            $('#search_result').html(data);
        }
    });
    
}

function check_enter(event) {
    if (event.keyCode == 13) {
        search();
    }
};

function show_advanced_options() {
    if(get_search_mode() == 'advanced') {
        set_search_mode('simple');
    } else {
        set_search_mode('advanced');
    }
}

function set_search_mode(mode) {
    if (mode == 'simple') {
        $('#advanced_options').hide('fast');
        $('#show_advanced_options').html('Расширённый поиск');
    } else if (mode == 'advanced') {
        $('#advanced_options').show('fast');
        $('#show_advanced_options').html('Стандартный поиск');
    }
}

function get_search_mode() {
    if( $('#advanced_options').is(':visible') ) {
        return 'advanced';
    } else {
        return 'simple';
    }
}


function about_date() {
    $('#about_date_link').hide();
    $('#about_date').show('fast');
}